// vite.config.ts
import path from "path";
import vue from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/@vitejs/plugin-vue/dist/index.mjs";

// src/theme/custom-variables.ts
import { theme } from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/ant-design-vue/lib/index.js";
import convertLegacyToken from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/ant-design-vue/lib/theme/convertLegacyToken.js";
var { defaultAlgorithm, defaultSeed } = theme;
var mapToken = defaultAlgorithm(defaultSeed);
var token = convertLegacyToken.default(mapToken);
var custom_variables_default = {
  "@primary-color": token["primary-color"],
  // 全局主色
  "@base-bg-color": "#fff",
  "@hover-bg-color": "rgba(0, 0, 0, 0.025)",
  "@hover-bg-color-night": "rgba(255, 255, 255, 0.025)",
  "@header-light-bg-hover-color": "#f6f6f6",
  "@header-height": "80px",
  "@header-user-height": "40px",
  "@page-tag-height": "40px",
  "@theme-list": ["light", "dark", "night"]
};

// src/components/SvgLoad/index.ts
import { readFileSync, readdirSync } from "fs";
var idPerfix = "";
var svgTitle = /<svg([^>+].*?)>/;
var clearHeightWidth = /(width|height)="([^>+].*?)"/g;
var changPathId = /(id)=("ZONE|"zone)/g;
var hasViewBox = /(viewBox="[^>+].*?")/g;
var clearReturn = /(\r)|(\n)/g;
function svgFind(e) {
  const arr = [];
  const dirents = readdirSync(e, { withFileTypes: true });
  for (const dirent of dirents) {
    if (dirent.isDirectory()) {
      arr.push(...svgFind(e + dirent.name + "/"));
    } else {
      let svg = readFileSync(e + dirent.name).toString().replace(clearReturn, "").replace(svgTitle, ($1, $2, $3, $4) => {
        let width = 0, height = 0, content = $2.replace(clearHeightWidth, (s1, s2, s3) => {
          if (s2 === "width")
            width = s3;
          else if (s2 === "height")
            height = s3;
          return "";
        });
        if (!hasViewBox.test($2))
          content += `viewBox="0 0 ${width} ${height}"`;
        return `<symbol id="${idPerfix}-${dirent.name.replace(".svg", "")}" ${content}>`;
      }).replace("</svg>", "</symbol>");
      svg = svg.replace(changPathId, `id = "${dirent.name.replace(".svg", "")}-ZONE`);
      arr.push(svg);
    }
  }
  return arr;
}
var createSvg = (path2, perfix = "svg") => {
  if (path2 === "")
    return;
  idPerfix = perfix;
  const res = svgFind(path2);
  return {
    name: "svg-transform",
    transformIndexHtml(dom) {
      return dom.replace(
        "<body>",
        `<body><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; width: 0; height: 0">${res.join("")}</svg>`
      );
    }
  };
};

// vite.config.ts
import { ElementPlusResolver } from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/unplugin-vue-components/dist/resolvers.mjs";
import mockDevServerPlugin from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/vite-plugin-mock-dev-server/dist/index.js";
import IconsResolver from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/unplugin-icons/dist/resolver.mjs";
import Icons from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/unplugin-icons/dist/vite.mjs";
import AutoImport from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/unplugin-auto-import/dist/vite.js";
import Components from "file:///E:/VUE-TS/bgtypescriptNew/node_modules/unplugin-vue-components/dist/vite.mjs";
var __vite_injected_original_dirname = "E:\\VUE-TS\\bgtypescriptNew";
var pathResolve = path.resolve(__vite_injected_original_dirname, "src");
var vite_config_default = {
  optimizeDeps: {
    // 开发时 解决这些commonjs包转成esm包
    include: [
      "@jiaminghi/c-render",
      "@jiaminghi/c-render/lib/plugin/util",
      "@jiaminghi/charts/lib/util/index",
      "@jiaminghi/charts/lib/util",
      "@jiaminghi/charts/lib/extend/index",
      "@jiaminghi/charts",
      "@jiaminghi/color"
    ]
  },
  build: {
    // 打包时需要另外处理的commonjs规范的包
    commonjsOptions: {
      include: [/node_modules/]
    }
  },
  base: process.env.NODE_ENV === "production" ? "/" : "/",
  root: process.cwd(),
  resolve: {
    alias: [
      // 国际化替换
      {
        find: "vue-i18n",
        replacement: "vue-i18n/dist/vue-i18n.cjs.js"
      },
      // 绝对路径重命名：/@/xxxx => src/xxxx
      {
        find: /\/@\//,
        replacement: path.resolve("src") + "/"
      },
      {
        find: /^~/,
        replacement: ""
      }
    ]
  },
  // 服务端渲染
  server: {
    proxy: {
      "/api": {
        target: "http://10.171.7.100:8090",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/api/, "")
      },
      "/mapi/excel": "http://10.171.7.100:80",
      "/mapi": {
        target: "http://10.171.7.138:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/mapi/, "")
      },
      "/eapi": {
        target: "http://10.171.7.135:8080/coldbigdata",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/eapi/, "")
      },
      "/lapi": {
        target: "http://10.171.7.135:8080/",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/lapi/, "")
      },
      "/hmi": {
        target: "http://10.171.7.122:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/hmi/, "")
      },
      "/lhmi": {
        target: "http://10.171.7.123:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/lhmi/, "")
      },
      "/test": {
        target: "http://10.171.7.122:8091",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/test/, "")
      },
      "/mongodb": {
        target: "http://10.171.7.136:8888",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/mongodb/, "")
      },
      "/CAL1630": {
        target: "http://10.171.7.123:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/CAL1630/, "")
      },
      "/zinc": {
        target: "http://10.171.7.122:8888/ben_cbd",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/zinc/, "")
      },
      "/lhm": {
        target: "http://10.171.7.125:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/lhm/, "")
      }
    }
  },
  plugins: [
    vue(),
    mockDevServerPlugin({
      include: "mock/**/*.mock.{ts,js,cjs,mjs,json,json5}"
    }),
    AutoImport({
      imports: ["vue"],
      resolvers: [
        ElementPlusResolver(),
        IconsResolver({
          prefix: "Icon"
        })
      ],
      dts: path.resolve(pathResolve, "auto-imports.d.ts")
    }),
    Components({
      resolvers: [
        ElementPlusResolver(),
        IconsResolver({
          enabledCollections: ["ep"]
        })
      ],
      dts: path.resolve(pathResolve, "components.d.ts")
    }),
    Icons({
      autoInstall: true
    }),
    createSvg("./src/assets/svgs/")
  ],
  build: {
    // 清除console和debugger
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true
      }
    },
    rollupOptions: {
      output: {
        //配置这个是让不同类型文件放在不同文件夹，不会显得太乱
        chunkFileNames: "js/[name]-[hash].js",
        entryFileNames: "js/[name]-[hash].js",
        assetFileNames: "[ext]/[name]-[hash].[ext]",
        manualChunks(id) {
          if (id.includes("node_modules")) {
            return id.toString().split("node_modules/")[1].split("/")[0].toString();
          }
        }
      }
    },
    target: "modules",
    outDir: "dist",
    // 指定输出路径
    assetsDir: "assets",
    // 指定生成静态文件目录
    assetsInlineLimit: "4096",
    // 小于此阈值的导入或引用资源将内联为 base64 编码
    chunkSizeWarningLimit: 500,
    // chunk 大小警告的限制
    minify: "terser",
    // 混淆器，terser构建后文件体积更小
    emptyOutDir: true
    //打包前先清空原有打包文件
  },
  css: {
    preprocessorOptions: {
      less: {
        modifyVars: custom_variables_default,
        javascriptEnabled: true
      }
    }
  },
  define: {
    __INTLIFY_PROD_DEVTOOLS__: false,
    "process.env": process.env
  }
};
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAic3JjL3RoZW1lL2N1c3RvbS12YXJpYWJsZXMudHMiLCAic3JjL2NvbXBvbmVudHMvU3ZnTG9hZC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXFZVRS1UU1xcXFxiZ3R5cGVzY3JpcHROZXdcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXFZVRS1UU1xcXFxiZ3R5cGVzY3JpcHROZXdcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L1ZVRS1UUy9iZ3R5cGVzY3JpcHROZXcvdml0ZS5jb25maWcudHNcIjsvKlxyXG4gKiB2aXRlXHU5MTREXHU3RjZFXHJcbiAqXHJcbiAqIEBBdXRob3I6ICAgIDEwMjRcdTUyMUJcdTY1QjBcdTVCOUVcdTlBOENcdTVCQTQtXHU0RTNCXHU0RUZCXHVGRjFBXHU1MzUzXHU1OTI3XHJcbiAqIEBEYXRlOiAgICAgIDIwMjItMDUtMDIgMjM6NDQ6NTZcclxuICogQFdlY2hhdDogICAgemh1ZGExMDI0XHJcbiAqIEBFbWFpbDogICAgIGxhYjEwMjRAMTYzLmNvbVxyXG4gKiBAQ29weXJpZ2h0ICAxMDI0XHU1MjFCXHU2NUIwXHU1QjlFXHU5QThDXHU1QkE0IFx1RkYwOCBodHRwczovLzEwMjRsYWIubmV0IFx1RkYwOVx1RkYwQ1NpbmNlIDIwMTJcclxuICovXHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSc7XHJcbmltcG9ydCBjdXN0b21WYXJpYWJsZXMgZnJvbSAnLi9zcmMvdGhlbWUvY3VzdG9tLXZhcmlhYmxlcyc7XHJcbmltcG9ydCB7IGNyZWF0ZVN2ZyB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvU3ZnTG9hZC9pbmRleCdcclxuaW1wb3J0IHsgRWxlbWVudFBsdXNSZXNvbHZlciB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVycydcclxuaW1wb3J0IG1vY2tEZXZTZXJ2ZXJQbHVnaW4gZnJvbSAndml0ZS1wbHVnaW4tbW9jay1kZXYtc2VydmVyJ1xyXG5pbXBvcnQgSWNvbnNSZXNvbHZlciBmcm9tICd1bnBsdWdpbi1pY29ucy9yZXNvbHZlcidcclxuaW1wb3J0IEljb25zIGZyb20gJ3VucGx1Z2luLWljb25zL3ZpdGUnXHJcbmltcG9ydCB7IHByZXNldFVubywgcHJlc2V0QXR0cmlidXRpZnksIHByZXNldEljb25zLCBwcmVzZXRNaW5pIH0gZnJvbSAndW5vY3NzJ1xyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xyXG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlJ1xyXG5jb25zdCBwYXRoUmVzb2x2ZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdzcmMnKVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cclxuXHJcbiAgb3B0aW1pemVEZXBzOiB7XHJcbiAgICAvLyBcdTVGMDBcdTUzRDFcdTY1RjYgXHU4OUUzXHU1MUIzXHU4RkQ5XHU0RTlCY29tbW9uanNcdTUzMDVcdThGNkNcdTYyMTBlc21cdTUzMDVcclxuICAgIGluY2x1ZGU6IFtcclxuICAgICAgXCJAamlhbWluZ2hpL2MtcmVuZGVyXCIsXHJcbiAgICAgIFwiQGppYW1pbmdoaS9jLXJlbmRlci9saWIvcGx1Z2luL3V0aWxcIixcclxuICAgICAgXCJAamlhbWluZ2hpL2NoYXJ0cy9saWIvdXRpbC9pbmRleFwiLFxyXG4gICAgICBcIkBqaWFtaW5naGkvY2hhcnRzL2xpYi91dGlsXCIsXHJcbiAgICAgIFwiQGppYW1pbmdoaS9jaGFydHMvbGliL2V4dGVuZC9pbmRleFwiLFxyXG4gICAgICBcIkBqaWFtaW5naGkvY2hhcnRzXCIsXHJcbiAgICAgIFwiQGppYW1pbmdoaS9jb2xvclwiLFxyXG4gICAgXSxcclxuICB9LFxyXG4gIGJ1aWxkOiB7XHJcbiAgICAvLyBcdTYyNTNcdTUzMDVcdTY1RjZcdTk3MDBcdTg5ODFcdTUzRTZcdTU5MTZcdTU5MDRcdTc0MDZcdTc2ODRjb21tb25qc1x1ODlDNFx1ODMwM1x1NzY4NFx1NTMwNVxyXG4gICAgY29tbW9uanNPcHRpb25zOiB7XHJcbiAgICAgIGluY2x1ZGU6IFsvbm9kZV9tb2R1bGVzL11cclxuICAgIH0sXHJcbiAgfSxcclxuICBiYXNlOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nID8gJy8nIDogJy8nLFxyXG4gIHJvb3Q6IHByb2Nlc3MuY3dkKCksXHJcbiAgcmVzb2x2ZToge1xyXG4gICAgYWxpYXM6IFtcclxuICAgICAgLy8gXHU1NkZEXHU5NjQ1XHU1MzE2XHU2NkZGXHU2MzYyXHJcbiAgICAgIHtcclxuICAgICAgICBmaW5kOiAndnVlLWkxOG4nLFxyXG4gICAgICAgIHJlcGxhY2VtZW50OiAndnVlLWkxOG4vZGlzdC92dWUtaTE4bi5janMuanMnLFxyXG4gICAgICB9LFxyXG4gICAgICAvLyBcdTdFRERcdTVCRjlcdThERUZcdTVGODRcdTkxQ0RcdTU0N0RcdTU0MERcdUZGMUEvQC94eHh4ID0+IHNyYy94eHh4XHJcbiAgICAgIHtcclxuICAgICAgICBmaW5kOiAvXFwvQFxcLy8sXHJcbiAgICAgICAgcmVwbGFjZW1lbnQ6IHBhdGgucmVzb2x2ZSgnc3JjJykgKyAnLycsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBmaW5kOiAvXn4vLFxyXG4gICAgICAgIHJlcGxhY2VtZW50OiAnJyxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICAvLyBcdTY3MERcdTUyQTFcdTdBRUZcdTZFMzJcdTY3RDNcclxuICBzZXJ2ZXI6IHtcclxuICAgIHByb3h5OiB7XHJcbiAgICAgICcvYXBpJzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMDA6ODA5MCcsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9hcGkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy9tYXBpL2V4Y2VsJzogJ2h0dHA6Ly8xMC4xNzEuNy4xMDA6ODAnLFxyXG4gICAgICAnL21hcGknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEzODo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL21hcGkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy9lYXBpJzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMzU6ODA4MC9jb2xkYmlnZGF0YScsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9lYXBpLywgJycpXHJcbiAgICAgIH0sXHJcbiAgICAgICcvbGFwaSc6IHtcclxuICAgICAgICB0YXJnZXQ6ICdodHRwOi8vMTAuMTcxLjcuMTM1OjgwODAvJyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2xhcGkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy9obWknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEyMjo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2htaS8sICcnKVxyXG4gICAgICB9LFxyXG4gICAgICAnL2xobWknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEyMzo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2xobWkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy90ZXN0Jzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMjI6ODA5MScsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC90ZXN0LywgJycpXHJcbiAgICAgIH0sXHJcbiAgICAgICcvbW9uZ29kYic6IHtcclxuICAgICAgICB0YXJnZXQ6ICdodHRwOi8vMTAuMTcxLjcuMTM2Ojg4ODgnLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvbW9uZ29kYi8sICcnKVxyXG4gICAgICB9LFxyXG4gICAgICAnL0NBTDE2MzAnOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEyMzo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL0NBTDE2MzAvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy96aW5jJzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMjI6ODg4OC9iZW5fY2JkJyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL3ppbmMvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy9saG0nOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEyNTo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2xobS8sICcnKVxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9LFxyXG4gIHBsdWdpbnM6IFt2dWUoKSxcclxuICBtb2NrRGV2U2VydmVyUGx1Z2luKHtcclxuICAgIGluY2x1ZGU6ICdtb2NrLyoqLyoubW9jay57dHMsanMsY2pzLG1qcyxqc29uLGpzb241fScsXHJcbiAgfSksXHJcbiAgQXV0b0ltcG9ydCh7XHJcbiAgICBpbXBvcnRzOiBbJ3Z1ZSddLFxyXG4gICAgcmVzb2x2ZXJzOiBbRWxlbWVudFBsdXNSZXNvbHZlcigpLFxyXG4gICAgSWNvbnNSZXNvbHZlcih7XHJcbiAgICAgIHByZWZpeDogJ0ljb24nLFxyXG4gICAgfSldLFxyXG4gICAgZHRzOiBwYXRoLnJlc29sdmUocGF0aFJlc29sdmUsICdhdXRvLWltcG9ydHMuZC50cycpLFxyXG4gIH0pLFxyXG4gIENvbXBvbmVudHMoe1xyXG4gICAgcmVzb2x2ZXJzOiBbRWxlbWVudFBsdXNSZXNvbHZlcigpLFxyXG4gICAgSWNvbnNSZXNvbHZlcih7XHJcbiAgICAgIGVuYWJsZWRDb2xsZWN0aW9uczogWydlcCddLFxyXG4gICAgfSldLFxyXG4gICAgZHRzOiBwYXRoLnJlc29sdmUocGF0aFJlc29sdmUsICdjb21wb25lbnRzLmQudHMnKSxcclxuICB9KSxcclxuICBJY29ucyh7XHJcbiAgICBhdXRvSW5zdGFsbDogdHJ1ZSxcclxuICB9KSwgY3JlYXRlU3ZnKFwiLi9zcmMvYXNzZXRzL3N2Z3MvXCIpXSxcclxuICBidWlsZDoge1xyXG4gICAgLy8gXHU2RTA1XHU5NjY0Y29uc29sZVx1NTQ4Q2RlYnVnZ2VyXHJcbiAgICB0ZXJzZXJPcHRpb25zOiB7XHJcbiAgICAgIGNvbXByZXNzOiB7XHJcbiAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLFxyXG4gICAgICAgIGRyb3BfZGVidWdnZXI6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcm9sbHVwT3B0aW9uczoge1xyXG4gICAgICBvdXRwdXQ6IHtcclxuICAgICAgICAvL1x1OTE0RFx1N0Y2RVx1OEZEOVx1NEUyQVx1NjYyRlx1OEJBOVx1NEUwRFx1NTQwQ1x1N0M3Qlx1NTc4Qlx1NjU4N1x1NEVGNlx1NjUzRVx1NTcyOFx1NEUwRFx1NTQwQ1x1NjU4N1x1NEVGNlx1NTkzOVx1RkYwQ1x1NEUwRFx1NEYxQVx1NjYzRVx1NUY5N1x1NTkyQVx1NEU3MVxyXG4gICAgICAgIGNodW5rRmlsZU5hbWVzOiAnanMvW25hbWVdLVtoYXNoXS5qcycsXHJcbiAgICAgICAgZW50cnlGaWxlTmFtZXM6ICdqcy9bbmFtZV0tW2hhc2hdLmpzJyxcclxuICAgICAgICBhc3NldEZpbGVOYW1lczogJ1tleHRdL1tuYW1lXS1baGFzaF0uW2V4dF0nLFxyXG4gICAgICAgIG1hbnVhbENodW5rcyhpZCkge1xyXG4gICAgICAgICAgLy9cdTk3NTlcdTYwMDFcdThENDRcdTZFOTBcdTUyMDZcdTYyQzZcdTYyNTNcdTUzMDVcclxuICAgICAgICAgIGlmIChpZC5pbmNsdWRlcygnbm9kZV9tb2R1bGVzJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGlkLnRvU3RyaW5nKCkuc3BsaXQoJ25vZGVfbW9kdWxlcy8nKVsxXS5zcGxpdCgnLycpWzBdLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB0YXJnZXQ6ICdtb2R1bGVzJyxcclxuICAgIG91dERpcjogJ2Rpc3QnLCAvLyBcdTYzMDdcdTVCOUFcdThGOTNcdTUxRkFcdThERUZcdTVGODRcclxuICAgIGFzc2V0c0RpcjogJ2Fzc2V0cycsIC8vIFx1NjMwN1x1NUI5QVx1NzUxRlx1NjIxMFx1OTc1OVx1NjAwMVx1NjU4N1x1NEVGNlx1NzZFRVx1NUY1NVxyXG4gICAgYXNzZXRzSW5saW5lTGltaXQ6ICc0MDk2JywgLy8gXHU1QzBGXHU0RThFXHU2QjY0XHU5NjA4XHU1MDNDXHU3Njg0XHU1QkZDXHU1MTY1XHU2MjE2XHU1RjE1XHU3NTI4XHU4RDQ0XHU2RTkwXHU1QzA2XHU1MTg1XHU4MDU0XHU0RTNBIGJhc2U2NCBcdTdGMTZcdTc4MDFcclxuICAgIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDogNTAwLCAvLyBjaHVuayBcdTU5MjdcdTVDMEZcdThCNjZcdTU0NEFcdTc2ODRcdTk2NTBcdTUyMzZcclxuICAgIG1pbmlmeTogJ3RlcnNlcicsIC8vIFx1NkRGN1x1NkRDNlx1NTY2OFx1RkYwQ3RlcnNlclx1Njc4NFx1NUVGQVx1NTQwRVx1NjU4N1x1NEVGNlx1NEY1M1x1NzlFRlx1NjZGNFx1NUMwRlxyXG4gICAgZW1wdHlPdXREaXI6IHRydWUsIC8vXHU2MjUzXHU1MzA1XHU1MjREXHU1MTQ4XHU2RTA1XHU3QTdBXHU1MzlGXHU2NzA5XHU2MjUzXHU1MzA1XHU2NTg3XHU0RUY2XHJcbiAgfSxcclxuICBjc3M6IHtcclxuICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcclxuICAgICAgbGVzczoge1xyXG4gICAgICAgIG1vZGlmeVZhcnM6IGN1c3RvbVZhcmlhYmxlcyxcclxuICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuICBkZWZpbmU6IHtcclxuICAgIF9fSU5UTElGWV9QUk9EX0RFVlRPT0xTX186IGZhbHNlLFxyXG4gICAgJ3Byb2Nlc3MuZW52JzogcHJvY2Vzcy5lbnYsXHJcbiAgfSxcclxufTtcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxWVUUtVFNcXFxcYmd0eXBlc2NyaXB0TmV3XFxcXHNyY1xcXFx0aGVtZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcVlVFLVRTXFxcXGJndHlwZXNjcmlwdE5ld1xcXFxzcmNcXFxcdGhlbWVcXFxcY3VzdG9tLXZhcmlhYmxlcy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovVlVFLVRTL2JndHlwZXNjcmlwdE5ldy9zcmMvdGhlbWUvY3VzdG9tLXZhcmlhYmxlcy50c1wiO2ltcG9ydCB7IHRoZW1lIH0gZnJvbSAnYW50LWRlc2lnbi12dWUvbGliJztcclxuaW1wb3J0IGNvbnZlcnRMZWdhY3lUb2tlbiBmcm9tICdhbnQtZGVzaWduLXZ1ZS9saWIvdGhlbWUvY29udmVydExlZ2FjeVRva2VuJztcclxuXHJcbmNvbnN0IHsgZGVmYXVsdEFsZ29yaXRobSwgZGVmYXVsdFNlZWQgfSA9IHRoZW1lO1xyXG5cclxuY29uc3QgbWFwVG9rZW4gPSBkZWZhdWx0QWxnb3JpdGhtKGRlZmF1bHRTZWVkKTtcclxuY29uc3QgdG9rZW4gPSBjb252ZXJ0TGVnYWN5VG9rZW4uZGVmYXVsdChtYXBUb2tlbik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgJ0BwcmltYXJ5LWNvbG9yJzogdG9rZW5bJ3ByaW1hcnktY29sb3InXSwgLy8gXHU1MTY4XHU1QzQwXHU0RTNCXHU4MjcyXHJcbiAgJ0BiYXNlLWJnLWNvbG9yJzogJyNmZmYnLFxyXG4gICdAaG92ZXItYmctY29sb3InOiAncmdiYSgwLCAwLCAwLCAwLjAyNSknLFxyXG4gICdAaG92ZXItYmctY29sb3ItbmlnaHQnOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAyNSknLFxyXG4gICdAaGVhZGVyLWxpZ2h0LWJnLWhvdmVyLWNvbG9yJzogJyNmNmY2ZjYnLFxyXG4gICdAaGVhZGVyLWhlaWdodCc6ICc4MHB4JyxcclxuICAnQGhlYWRlci11c2VyLWhlaWdodCc6ICc0MHB4JyxcclxuICAnQHBhZ2UtdGFnLWhlaWdodCc6ICc0MHB4JyxcclxuICAnQHRoZW1lLWxpc3QnOiBbJ2xpZ2h0JywgJ2RhcmsnLCAnbmlnaHQnXSxcclxufTtcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxWVUUtVFNcXFxcYmd0eXBlc2NyaXB0TmV3XFxcXHNyY1xcXFxjb21wb25lbnRzXFxcXFN2Z0xvYWRcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXFZVRS1UU1xcXFxiZ3R5cGVzY3JpcHROZXdcXFxcc3JjXFxcXGNvbXBvbmVudHNcXFxcU3ZnTG9hZFxcXFxpbmRleC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovVlVFLVRTL2JndHlwZXNjcmlwdE5ldy9zcmMvY29tcG9uZW50cy9TdmdMb2FkL2luZGV4LnRzXCI7LypcclxuICogQERlc2NyaXB0aW9uOiBcclxuICogQFZlcnNpb246IDEuMFxyXG4gKiBARGF0ZTogMjAyMy0wNy0yNyAyMjo0ODowMlxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIzLTA4LTA3IDA5OjUzOjI4XHJcbiAqL1xyXG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIHJlYWRkaXJTeW5jIH0gZnJvbSAnZnMnXHJcbmltcG9ydCB7IGNvbnNvbGUgfSBmcm9tICdpbnNwZWN0b3InO1xyXG5sZXQgaWRQZXJmaXggPSAnJ1xyXG5jb25zdCBzdmdUaXRsZSA9IC88c3ZnKFtePitdLio/KT4vXHJcbmNvbnN0IGNsZWFySGVpZ2h0V2lkdGggPSAvKHdpZHRofGhlaWdodCk9XCIoW14+K10uKj8pXCIvZ1xyXG5jb25zdCBjaGFuZ1BhdGhJZCA9IC8oaWQpPShcIlpPTkV8XCJ6b25lKS9nXHJcbmNvbnN0IGhhc1ZpZXdCb3ggPSAvKHZpZXdCb3g9XCJbXj4rXS4qP1wiKS9nXHJcbmNvbnN0IGNsZWFyUmV0dXJuID0gLyhcXHIpfChcXG4pL2dcclxuLy8gXHU2N0U1XHU2MjdFc3ZnXHU2NTg3XHU0RUY2XHJcbmV4cG9ydCBmdW5jdGlvbiBzdmdGaW5kKGU6IGFueSk6IGFueSB7XHJcbiAgY29uc3QgYXJyID0gW11cclxuICBjb25zdCBkaXJlbnRzID0gcmVhZGRpclN5bmMoZSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pXHJcbiAgZm9yIChjb25zdCBkaXJlbnQgb2YgZGlyZW50cykge1xyXG4gICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgIGFyci5wdXNoKC4uLnN2Z0ZpbmQoZSArIGRpcmVudC5uYW1lICsgJy8nKSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgc3ZnID0gcmVhZEZpbGVTeW5jKGUgKyBkaXJlbnQubmFtZSlcclxuICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgIC5yZXBsYWNlKGNsZWFyUmV0dXJuLCAnJylcclxuICAgICAgICAucmVwbGFjZShzdmdUaXRsZSwgKCQxOiBhbnksICQyOiBhbnksICQzOiBhbnksICQ0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCB3aWR0aCA9IDAsXHJcbiAgICAgICAgICAgIGhlaWdodCA9IDAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSAkMi5yZXBsYWNlKGNsZWFySGVpZ2h0V2lkdGgsIChzMTogYW55LCBzMjogYW55LCBzMzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHMyID09PSAnd2lkdGgnKSB3aWR0aCA9IHMzXHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAoczIgPT09ICdoZWlnaHQnKSBoZWlnaHQgPSBzM1xyXG4gICAgICAgICAgICAgIHJldHVybiAnJ1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgaWYgKCFoYXNWaWV3Qm94LnRlc3QoJDIpKSBjb250ZW50ICs9IGB2aWV3Qm94PVwiMCAwICR7d2lkdGh9ICR7aGVpZ2h0fVwiYFxyXG4gICAgICAgICAgcmV0dXJuIGA8c3ltYm9sIGlkPVwiJHtpZFBlcmZpeH0tJHtkaXJlbnQubmFtZS5yZXBsYWNlKCcuc3ZnJywgJycpfVwiICR7Y29udGVudH0+YFxyXG4gICAgICAgIH0pLnJlcGxhY2UoJzwvc3ZnPicsICc8L3N5bWJvbD4nKVxyXG4gICAgICAgc3ZnID0gc3ZnLnJlcGxhY2UoY2hhbmdQYXRoSWQsIGBpZCA9IFwiJHtkaXJlbnQubmFtZS5yZXBsYWNlKCcuc3ZnJywgJycpfS1aT05FYClcclxuICAgICAgYXJyLnB1c2goc3ZnKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICByZXR1cm4gYXJyXHJcbn1cclxuLy8gXHU3NTFGXHU2MjEwc3ZnXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVTdmcgPSAocGF0aDogYW55LCBwZXJmaXggPSAnc3ZnJykgPT4ge1xyXG4gIGlmIChwYXRoID09PSAnJykgcmV0dXJuXHJcbiAgaWRQZXJmaXggPSBwZXJmaXhcclxuICBjb25zdCByZXMgPSBzdmdGaW5kKHBhdGgpXHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBuYW1lOiAnc3ZnLXRyYW5zZm9ybScsXHJcbiAgICB0cmFuc2Zvcm1JbmRleEh0bWwoZG9tOiBTdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGRvbS5yZXBsYWNlKFxyXG4gICAgICAgICc8Ym9keT4nLFxyXG4gICAgICAgIGA8Ym9keT48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDA7IGhlaWdodDogMFwiPiR7cmVzLmpvaW4oJycpfTwvc3ZnPmBcclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBU0EsT0FBTyxVQUFVO0FBQ2pCLE9BQU8sU0FBUzs7O0FDVitSLFNBQVMsYUFBYTtBQUNyVSxPQUFPLHdCQUF3QjtBQUUvQixJQUFNLEVBQUUsa0JBQWtCLFlBQVksSUFBSTtBQUUxQyxJQUFNLFdBQVcsaUJBQWlCLFdBQVc7QUFDN0MsSUFBTSxRQUFRLG1CQUFtQixRQUFRLFFBQVE7QUFFakQsSUFBTywyQkFBUTtBQUFB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
